import java.lang.*; import java.util.*; public class DataCollection { private long TypeAResidence = 0; private long TypeBResidence = 0; private long TypeCResidence = 0; private long G1WaitTime = 0; private long G2WaitTime = 0; private long G3WaitTime = 0; private long G4WaitTime = 0; private long G5WaitTime = 0; private long StWaitTime = 0; private long StOverflowTime = 0; private int numA = 0, numB = 0, numC = 0; private int G1WQ = 0, G2WQ = 0, G3WQ=0, G4WQ=0, G5WQ=0, StWQ=0, StOQ=0; private long StartTime, EndTime; private System rightNow; public DataCollection() { StartTime = rightNow.currentTimeMillis(); } //methods to get residence time public synchronized void getAR(long t) { TypeAResidence += t; numA++; } public synchronized void getBR(long t) { TypeBResidence += t; numB++; } public synchronized void getCR(long t) { TypeCResidence += t; numC++; } //methods to get waiting time and queue public synchronized void getG1WT(long t) { G1WaitTime += t; } public synchronized void getG1WQ() { G1WQ++; } public synchronized void getG2WT(long t) { G2WaitTime += t; } public synchronized void getG2WQ() { G2WQ++; } public synchronized void getG3WT(long t) { G3WaitTime += t; } public synchronized void getG3WQ() { G3WQ++; } public synchronized void getG4WT(long t) { G4WaitTime += t; } public synchronized void getG4WQ() { G4WQ++; } public synchronized void getG5WT(long t) { G5WaitTime += t; } public synchronized void getG5WQ() { G5WQ++; } public synchronized void getStWT(long t) { StWaitTime += t; } public synchronized void getStWQ() { StWQ++; } //Storage overflowing waitings public synchronized void getStOQ() { StOQ++; } public synchronized void getStOT(long t) { StOverflowTime += t; } public synchronized void Report() { EndTime = rightNow.currentTimeMillis(); System.out.println("Simulation Time = " + ((EndTime - StartTime) / 1000) + " " + "Start Time = " + StartTime/1000 + " " + "End Time = " + EndTime/1000); System.out.println(" " ); System.out.println("The average residence time for Type 1 = " + (TypeAResidence / numA / 1000) + " " + (TypeAResidence / 1000) + " " + numA); System.out.println("The average residence time for Type 2 = " + (TypeBResidence / numB / 1000) + " " + (TypeBResidence / 1000) + " " + numB); System.out.println("The average residence time for Type 3 = " + (TypeCResidence / numC / 1000) + " " + (TypeCResidence / 1000) + " " + numC); System.out.println(" " ); System.out.println("The average unitilization rate for group1 = " + ((double)(numA*600+numB*800+numC*700) / 600000)); System.out.println("The average unitilization rate for group2 = " + ((double)(numA*850+numC*1200) / 400000)); System.out.println("The average unitilization rate for group3 = " + ((double)(numA*500+numB*500+numC*1000) / 800000)); System.out.println("The average unitilization rate for group4 = " + ((double)(numB*1100+numC*900) / 600000)); System.out.println("The average unitilization rate for group5 = " + ((double)(numA*500+numC*250) / 200000)); System.out.println(" " ); System.out.println("The average waiting time for Group 1 = " + ((double)G1WaitTime / G1WQ / 3 /1000)); System.out.println("The average waiting time for Group 2 = " + ((double)G2WaitTime / G2WQ / 2 /1000)); System.out.println("The average waiting time for Group 3 = " + ((double)G3WaitTime / G3WQ / 4 /1000)); System.out.println("The average waiting time for Group 4 = " + ((double)G4WaitTime / G4WQ / 3 /1000)); System.out.println("The average waiting time for Group 5 = " + ((double)G5WaitTime / G5WQ / 1 /1000)); System.out.println("The waiting time for Storage is = " + StWaitTime /1000); System.out.println("The average waiting time for Storage Overflowing = " + ((double)StOverflowTime / StOQ /1000)); System.out.println(" " ); System.out.println("The average waitings for Group 1 = " + (G1WQ / 3)); System.out.println("The average waitings for Group 2 = " + (G2WQ / 2)); System.out.println("The average waitings for Group 3 = " + (G3WQ / 4)); System.out.println("The average waitings for Group 4 = " + (G4WQ / 3)); System.out.println("The average waitings for Group 5 = " + (G5WQ / 1)); System.out.println("The waitings for Intermediate products = " + StWQ ); System.out.println("The waitings for Stroage overflowing = " + StOQ ); } }